package com.zhu.instructions.math;

import com.zhu.instructions.base.NoOperandsInstruction;
import com.zhu.rtda.Frame;
import com.zhu.rtda.OperandStack;

/**
 * 指令：ixor
 *
 * 操作数：无
 *
 * 功能：
 *  将栈顶的两个 int 值进行按位异或：value1 ^ value2
 *
 * 栈变化：
 *      ..., value1(int), value2(int) → ..., result(int)
 *
 * 示例：
 *  5 ^ 3 = 6
 *
 * 实现：
 *  使用 ^ 操作符对两个 int 值进行按位异或运算
 */
public class IXOR extends NoOperandsInstruction {
    @Override
    public void execute(Frame frame) {
        OperandStack stack = frame.getOperandStack();
        int v2 = stack.popInt();
        int v1 = stack.popInt();
        int result = v1 ^ v2;
        stack.pushInt(result);
    }
}